const methodName = "sayHello";

class User {
  // [prop: string]: string | number | { (): void }; // 索引器, 在ts中必须书写在类中最前面
  [prop: string]: any; // 索引器   索引器中的键的索引的类型可以使用string，number

  constructor(public name: string, public age: number) {}

  sayHello() {}
}

const u = new User("as", 12);
u[methodName]();
console.log(u["pid"]); // 在ts中，默认情况下，不对索引器（成员表达式）不做严格检查（要开启noImplicitAny）

class MyArray {
  [index: number]: string;

  0 = "1";
  1 = "33";
  2 = "111";
}

const my = new MyArray();
my[0];

class B {}

class A {
  // 在ts中如果写了两个不同类型的索引器，那么number类型的索引器必须是string类型的索引器的子类型
  [prop: number]: B;
  [prop: string]: object;
}

export {};
